#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main()
{
    //c语言接口
    printf("hello printf\n");
    fprintf(stdout, "hello fprintf\n");
    fputs("hello fputs\n", stdout);

    //系统接口
    char* s = "hello write\n";
    write(1, s, strlen(s));
    //代码结束之前，进行创建子进程
    //1 如果我们没有进行>，看到了4条消息
    //stdout默认使用的是行刷新，在fork之前，三条c语言函数已经把数据打印到显示器上了
    //2 我们进行了>，写入的文件不再是显示器，而是普通文件，采用的是全缓冲，虽然c语言3条打印函数带了\n，但不足把缓冲区填满，使用不会刷新
    //执行fork的时候，stdout属于父进程，创建子进程时，接着就是进程退出，谁先退出，要就要发生缓冲区刷新，也就是修改stdout，会发生写时拷贝
    //write为什么没有呢？上面的过程和write无关，write属于系统接口，没有c语言提供的缓冲区
    fork();
    return 0;
}
